 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package INTERFAZ;

import CONTROLES.ControlCliente;
import CONTROLES.ControlEntidad;
import CONTROLES.ControlSucursal;
import MODELOS.Cliente;
import MODELOS.EntidadFinanciera;
import UTILITARIOS.Herramienta;
import UTILITARIOS.UTextField;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
import javax.swing.filechooser.FileFilter;


/**
 *
 * @author Administrador
 */
public class EditarCliente extends JDialog implements Propiedades{

    private JPanel datosPersonales;
    private JPanel pnlBotones;

    private JLabel lblSucursal;
    private Choice sucursal;

    private JLabel nombreCliente;
    private UTextField txtNombre;

    private JLabel apellidoCliente;
    private UTextField txtApellido;

    private JLabel ciCliente;
    private UTextField txtCi;

    private JLabel ciProcedencia;
    private Choice txtProcedencia;

    private JLabel nit;
    private UTextField txtNit;

    
    private JLabel dirCliente;
    private UTextField txtDireccion;

    private JLabel telefCliente;
    private UTextField txtTelefono;

    private JLabel celularCliente;
    private UTextField txtCelular;

    private JLabel lblCuenta;
    private UTextField txtCuenta;

    private JLabel nomBanco;
    private Choice txtBanco;


    private JButton btnSiguiente;
    private JButton btnCancelar;

    ControlEntidad control = new ControlEntidad();
    ArrayList<EntidadFinanciera> entList = control.getEntidades(1);


    String lista[] = control.nombresEnt();

    ControlSucursal controlS = new ControlSucursal();
    String listaS[] = controlS.nombresSuc();

    private int idCliente;


    public EditarCliente()
    {
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();
    }


    public void setProperties() {


        setSize(600,470);
        Image icon = new ImageIcon(getClass().getResource("/imagenes/nfn.png")).getImage();
        setIconImage(icon);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setTitle("Edición de Clientes");
        setResizable(false);
        setLayout(new FlowLayout());
        //setVisible(true);
    }

    public void buildComponents() {

        datosPersonales = new JPanel();
        pnlBotones = new JPanel();

        lblSucursal = new JLabel("Sucursal(*) :", JLabel.RIGHT);
        sucursal = new Choice();

        for(int i=0; i<listaS.length; i++){
         
        sucursal.add(listaS[i].toString());
        }

        nombreCliente = new JLabel("Nombre(*) : ", JLabel.RIGHT );
        txtNombre = new UTextField(UTextField.ONLY_CARACTERS_VALUE);

        apellidoCliente = new JLabel("Apellidos(*) : ", JLabel.RIGHT );
        txtApellido = new UTextField(UTextField.ONLY_CARACTERS_VALUE);

        ciCliente = new JLabel("Carnet de Identidad(*) : ", JLabel.RIGHT );
        txtCi = new UTextField(UTextField.INT_VALUE);

        ciProcedencia = new JLabel("Procedencia CI(*) : ", JLabel.RIGHT );
        txtProcedencia = new Choice();

        nit = new JLabel("Nit(*) : ", JLabel.RIGHT );
        txtNit = new UTextField(UTextField.INT_VALUE);

        txtProcedencia.add("BENI");
        txtProcedencia.add("SANTA CRUZ");
        txtProcedencia.add("COCHABAMBA");
        txtProcedencia.add("LA PAZ");
        txtProcedencia.add("TARIJA");
        txtProcedencia.add("CHUQUISACA");
        txtProcedencia.add("PANDO");
        txtProcedencia.add("ORURO");
        txtProcedencia.add("POTOSI");



       

        dirCliente = new JLabel("Dirección(*) : ", JLabel.RIGHT );
        txtDireccion = new UTextField();

        telefCliente = new JLabel("Teléfono(*) : ", JLabel.RIGHT );
        txtTelefono = new UTextField(UTextField.PHONE_FAX_VALUE);

        celularCliente = new JLabel("Celular(*) : ", JLabel.RIGHT );
        txtCelular = new UTextField(UTextField.PHONE_FAX_VALUE);

        lblCuenta = new JLabel("Numero de Cuenta : ", JLabel.RIGHT );
        txtCuenta = new UTextField(UTextField.INT_VALUE);

        nomBanco = new JLabel("Entidad Financiera : ", JLabel.RIGHT );
        txtBanco = new Choice();

        for(int i =0; i<entList.size(); i++)
        {
            txtBanco.add(entList.get(i).getNombreEnt());
        }
        
        btnCancelar = new JButton("Cancelar");
        btnSiguiente = new JButton("Actualizar");
    }

    public void setPropertiesComponents() {

        datosPersonales.setLayout(new FlowLayout());
        datosPersonales.setPreferredSize(new Dimension(500, 340));
        datosPersonales.setBorder(BorderFactory.createTitledBorder(null,"Datos Personales",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));


        pnlBotones.setPreferredSize(new Dimension(400, 70));
        pnlBotones.setBorder(BorderFactory.createTitledBorder(null,"Acciones",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));


        Dimension dimLabel = new Dimension(120,20);
	Dimension dimText = new Dimension(290,20);
	Font fontLabel = new Font("Tahoma",Font.PLAIN,11);

       lblSucursal.setPreferredSize(dimLabel);
       lblSucursal.setFont(fontLabel);
       lblSucursal.setForeground(Color.BLACK);
       sucursal.setPreferredSize(dimText);
       sucursal.setEnabled(false);

        nombreCliente.setPreferredSize( dimLabel );
	nombreCliente.setFont(fontLabel);
        nombreCliente.setForeground(Color.BLACK);
	txtNombre.setPreferredSize( dimText );


        apellidoCliente.setPreferredSize( dimLabel );
	apellidoCliente.setFont(fontLabel);
        apellidoCliente.setForeground(Color.BLACK);
	txtApellido.setPreferredSize( dimText );

        ciCliente.setPreferredSize( new Dimension(125,20) );
	ciCliente.setFont(fontLabel);
        ciCliente.setForeground(Color.BLACK);
	txtCi.setPreferredSize( dimText );

        ciProcedencia.setPreferredSize( dimLabel );
	ciProcedencia.setFont(fontLabel);
        ciProcedencia.setForeground(Color.BLACK);
	txtProcedencia.setPreferredSize( dimText );

        nit.setPreferredSize( dimLabel );
	nit.setFont(fontLabel);
        nit.setForeground(Color.BLACK);
	txtNit.setPreferredSize( dimText );

        dirCliente.setPreferredSize( dimLabel );
	dirCliente.setFont(fontLabel);
        dirCliente.setForeground(Color.BLACK);
	txtDireccion.setPreferredSize( dimText );

        telefCliente.setPreferredSize( dimLabel );
	telefCliente.setFont(fontLabel);
        telefCliente.setForeground(Color.BLACK);
	txtTelefono.setPreferredSize( dimText );

        celularCliente.setPreferredSize( dimLabel );
	celularCliente.setFont(fontLabel);
        celularCliente.setForeground(Color.BLACK);
	txtCelular.setPreferredSize( dimText );

        lblCuenta.setPreferredSize( dimLabel );
	lblCuenta.setFont(fontLabel);
        lblCuenta.setForeground(Color.BLACK);
	txtCuenta.setPreferredSize( dimText );
        txtCuenta.setMandatory(false);

        nomBanco.setPreferredSize( dimLabel );
	nomBanco.setFont(fontLabel);
        nomBanco.setForeground(Color.BLACK);
	txtBanco.setPreferredSize( dimText );

        btnSiguiente.setToolTipText("Actualizar Cliente");
        btnSiguiente.setForeground(Color.BLACK);
	btnCancelar.setToolTipText("Cancelar la operación");
        btnCancelar.setForeground(Color.BLACK);
    }

    public void addComponents() {

        add(datosPersonales);
        add(pnlBotones);

        datosPersonales.add(lblSucursal);
        datosPersonales.add(sucursal);

        datosPersonales.add(nombreCliente);
        datosPersonales.add(txtNombre);

        datosPersonales.add(apellidoCliente);
        datosPersonales.add(txtApellido);

        datosPersonales.add(ciCliente);
        datosPersonales.add(txtCi);

        datosPersonales.add(ciProcedencia);
        datosPersonales.add(txtProcedencia);

        datosPersonales.add(nit);
        datosPersonales.add(txtNit);

        datosPersonales.add(dirCliente);
        datosPersonales.add(txtDireccion);

        datosPersonales.add(telefCliente);
        datosPersonales.add(txtTelefono);

        datosPersonales.add(celularCliente);
        datosPersonales.add(txtCelular);

        datosPersonales.add(nomBanco);
        datosPersonales.add(txtBanco);

        datosPersonales.add(lblCuenta);
        datosPersonales.add(txtCuenta);

        pnlBotones.add(btnSiguiente);
        pnlBotones.add(btnCancelar);

        
    }

    public void addEvents() {

        btnSiguiente.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
                            ControlCliente contCli = new ControlCliente();
                            Cliente cli = new Cliente();
                            if(getSucursal().isEmpty() || getTxtNombre().isEmpty() || getTxtApellido().isEmpty() || getTxtDireccion().isEmpty() || getTxtCi().isEmpty() || getTxtProcedencia().isEmpty() || getTxtTelefono().isEmpty() || getTxtCelular().isEmpty() || gettxtBanco().isEmpty() || gettxtCuenta().isEmpty())
                            {
                                setVisible(false);
                                JOptionPane.showMessageDialog(null, "Se produjo un error al tratar de actualizar al Cliente o faltan campos por llenar", "Confirmación", JOptionPane.YES_OPTION);
                                setVisible(true);
                            }else{
                            String idSuc = getSucursal();
                            StringTokenizer i = new StringTokenizer(idSuc,"-");
                            int idSucursal = Integer.parseInt(i.nextToken());

                            int idCliente = getIdCliente();
                            int ci = Integer.parseInt(getTxtCi());
                            long nit = Long.parseLong(getTxtNit());
                            int telefono = Integer.parseInt(getTxtTelefono());
                            int celular = Integer.parseInt(getTxtCelular());
                            long cuenta= Long.parseLong(gettxtCuenta());
                            
                            
                            if(cuenta==0)
                                 {
                                    cli.setIdCliente(idCliente);
                                    cli.setNombreCliente(getTxtNombre());
                                    cli.setApellidosCli(getTxtApellido());
                                    cli.setCiCliente(ci);
                                    cli.setDireccion(getTxtDireccion());
                                    cli.setTelefono(telefono);
                                    cli.setCelular(celular);
                                    cli.setCuenta(0);
                                    cli.setBanco("");
                                    cli.setCiProcedencia(getTxtProcedencia());
                                    cli.setIdSucursal(idSucursal);
                                    cli.setNit(nit);
                                    dispose();
                                    contCli.ActualizarCliente(cli);
                                    JOptionPane.showMessageDialog(null, "El CLIENTE ha sido Actualizado CORRECTAMENTE ", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                                    
                                    InformacionCliente inf = new InformacionCliente(cli);
                                    Herramienta.centerOnScreen(inf);
                                    inf.setVisible(true);
                                         
                                }else{
                                    cli.setIdCliente(idCliente);
                                    cli.setNombreCliente(getTxtNombre());
                                    cli.setApellidosCli(getTxtApellido());
                                    cli.setCiCliente(ci);
                                    cli.setDireccion(getTxtDireccion());
                                    cli.setTelefono(telefono);
                                    cli.setCelular(celular);
                                    cli.setCuenta(cuenta);
                                    cli.setBanco(gettxtBanco());
                                    cli.setCiProcedencia(getTxtProcedencia());
                                    cli.setIdSucursal(idSucursal);
                                    cli.setNit(nit);
                                  

                                   
                                    dispose();
                                    contCli.ActualizarCliente(cli);
                                    JOptionPane.showMessageDialog(null, "El CLIENTE ha sido Actualizado CORRECTAMENTE ", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                                    
                                    InformacionCliente inf = new InformacionCliente(cli);
                                    Herramienta.centerOnScreen(inf);
                                    inf.setVisible(true);
                                }
                            
                           
                             
                           }

			}
		});

        btnCancelar.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				//JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema ", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                                dispose();
			}
		});

       addWindowListener( new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				//JOptionPane.showMessageDialog(null, "Seguro que quiere salir", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                            dispose();
                        }
		});

       
        
    }

    public String getTxtApellido() {
        return txtApellido.getText();
    }

    public void setTxtApellido(String txtApellido) {
        this.txtApellido.setText(txtApellido);
    }

    public String getTxtCi() {
        return txtCi.getText();
    }

    public void setTxtCi(String txtCi) {
        this.txtCi.setText(txtCi);
    }
    public String getTxtNit() {
        return txtNit.getText();
    }

    public void setTxtNit(String txtN) {
        this.txtNit.setText(txtN);
    }
    public String getTxtProcedencia() {
        return txtProcedencia.getSelectedItem();
    }

    public void setTxtProcedencia(String txtProcedencia) {
        this.txtProcedencia.select(txtProcedencia);
    }


    public String getSucursal() {
        return sucursal.getSelectedItem();
    }

    public void setSucursal(String sucursal) {
        this.sucursal.select(sucursal);
    }

    public String getTxtCelular() {
        return txtCelular.getText();
    }

    public void setTxtCelular(String txtCelular) {
        this.txtCelular.setText(txtCelular);
    }

    public String getTxtDireccion() {
        return txtDireccion.getText();
    }

    public void setTxtDireccion(String txtDireccion) {
        this.txtDireccion.setText(txtDireccion);
    }

    public String gettxtBanco() {
        return txtBanco.getSelectedItem();
    }

    public void settxtBanco(String txtBanco) {
        this.txtBanco.select(txtBanco);
    }

    public String gettxtCuenta() {
        return txtCuenta.getText();
    }

    public void settxtCuenta(String txtCuenta) {
        this.txtCuenta.setText(txtCuenta);
    }

    public String getTxtNombre() {
        return txtNombre.getText();
    }

    public void setTxtNombre(String txtNombre) {
        this.txtNombre.setText(txtNombre);
    }

    public String getTxtTelefono() {
        return txtTelefono.getText();
    }

    public void setTxtTelefono(String txtTelefono) {
        this.txtTelefono.setText(txtTelefono);
    }

   

    public int getIdCliente()
    {
        return idCliente;
    }

    public void setIdCliente(int n)
    {
        this.idCliente = n;
    }








    class SeleccionarImagen implements ActionListener {



    public void actionPerformed(ActionEvent e) {
       	       String strSeleccionado;
	       JFileChooser jfcSeleccionarArchivo = new JFileChooser();
	       //Asignar el filtro para que solo se vean imagenes en la ventana abrir
	       jfcSeleccionarArchivo.addChoosableFileFilter(new FiltroImagenes());
	       //Filtro a usarse por defecto
	       jfcSeleccionarArchivo.setFileFilter(jfcSeleccionarArchivo.getChoosableFileFilters()[1]);

	          // Abre el cuadro de dialogo Abrir
	          int retval = jfcSeleccionarArchivo.showOpenDialog(EditarCliente.this);
	          if (retval == JFileChooser.APPROVE_OPTION)
	          {
	              //... Si el usuario selecciono un archivo, entonces usarlo
	              File filSeleccionado = jfcSeleccionarArchivo.getSelectedFile();
	              //Obtener ruta absoluta del archivo seleccionado
	              strSeleccionado = filSeleccionado.getAbsolutePath();
	              //Mostrar la ruta al usuario en el area de texto correspondiente
	              
	          }
	      }
	          //fin de clase interna

    }






class FiltroImagenes extends FileFilter{

      public boolean accept(File f)
	   {
	      if( f.isDirectory() )
	         return true;

	      String nombreArchivo = f.getName().toLowerCase();
	      if( nombreArchivo != null )
	         if( nombreArchivo.endsWith(".jpeg") ||
	            nombreArchivo.endsWith(".jpg")  ||
	            nombreArchivo.endsWith(".png")  ||
	            nombreArchivo.endsWith(".gif")
	           )
	            return true;

	      return false;
	   }
	   //Descripcion del filtro (se mostrara en la ventana abrir)
	   public String getDescription()
	   {
	      return "Archivos de imagenes ( *.jpg ,  *.png ,  *.gif )";
	   }



}





    public static void main (String Args[])
    {
        EditarCliente cli = new EditarCliente();
        cli.setVisible(true);
    }

}
